package com.nts.pmchelperdemo3.controller;

import com.nts.pmchelperdemo3.dto.ToolDTO;
import com.nts.pmchelperdemo3.result.Result;
import com.nts.pmchelperdemo3.service.ToolService;
import com.nts.pmchelperdemo3.util.ResultUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 刀具管理控制器（处理刀具信息的增删改查）
 */
@RestController
@RequestMapping("/api/tools")
@Api(tags = "刀具管理接口")
public class ToolController {

    @Autowired
    private ToolService toolService;

    /**
     * 创建刀具（普通刀，定制刀无需提前创建）
     */
    @PostMapping
    @ApiOperation("添加普通刀具信息（定制刀无需提前添加）")
    public Result<ToolDTO> createTool(@RequestBody ToolDTO toolDTO) {
        ToolDTO createdTool = toolService.createTool(toolDTO);
        return ResultUtil.success(createdTool, "刀具创建成功");
    }

    /**
     * 查询所有刀具
     */
    @GetMapping
    @ApiOperation("查询所有刀具列表")
    public Result<List<ToolDTO>> getAllTools(
            @RequestParam(required = false) String toolName,  // 可选：按名称模糊查询
            @RequestParam(defaultValue = "1") Integer page,
            @RequestParam(defaultValue = "1000") Integer size) {
        List<ToolDTO> tools = toolService.queryTools(toolName, page, size);
        return ResultUtil.success(tools, "刀具列表查询成功");
    }

    /**
     * 查询单个刀具详情
     */
    @GetMapping("/{id}")
    @ApiOperation("查询刀具详情")
    public Result<ToolDTO> getToolById(@PathVariable Long id) {
        ToolDTO toolDTO = toolService.getToolById(id);
        return ResultUtil.success(toolDTO, "刀具详情查询成功");
    }

    /**
     * 更新刀具信息（仅普通刀可更新）
     */
    @PutMapping("/{id}")
    @ApiOperation("更新刀具信息（仅普通刀）")
    public Result<ToolDTO> updateTool(
            @PathVariable Long id,
            @RequestBody ToolDTO toolDTO) {
        ToolDTO updatedTool = toolService.updateTool(id, toolDTO);
        return ResultUtil.success(updatedTool, "刀具信息更新成功");
    }

    /**
     * 删除刀具（需确认无关联订单）
     */
    @DeleteMapping("/{id}")
    @ApiOperation("删除刀具（无关联订单时可删除）")
    public Result<Void> deleteTool(@PathVariable Long id) {
        toolService.deleteTool(id);
        return ResultUtil.success(null, "刀具删除成功");
    }

    @GetMapping("/count")
    @ApiOperation("查询刀具总数")
    public Result<Integer> getToolCount(){
        int count = toolService.countAllTools();
        return ResultUtil.success(count,"查询刀具总数成功");
    }
}
